package com.controladores.controlvehicular;
import com.controladores.controlvehicular.R;
import com.controladores.controlvehicular.comunicacion.ComunicacionTCP;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.media.SoundPool;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

//import yuku.ambilwarna.AmbilWarnaDialog;
//import yuku.ambilwarna.AmbilWarnaDialog.OnAmbilWarnaListener;

import android.app.ProgressDialog;
import android.text.Editable;
import android.text.TextWatcher;
import java.util.regex.*;

import com.controladores.controlvehicular.basededatos.GestorBaseDatos;


public class InformacionVehiculo extends Activity implements TextWatcher{
        protected TextView fuenteInfVehiculo;
        // private RegistroControlVehiculo registroCV;

        private String placa;
        private String color;
        private String horaControl;
        private String marca;
        private String fechacontrol;
        private String infousuario, infoNombreZona, infoIdSubCalle;
        private int infoespacioRegistro = 0;
        int estadoEnvio = 1;
        private ProgressDialog dialogCircle;
        Button aceptar ,botonColor;
        TimePicker TPhoraControl;
        String numplaca;

        public String getNumplaca() {
                return numplaca;
        }

        public void setNumplaca(String numplaca) {
                this.numplaca = numplaca;
        }

        TextView cajaPlaca;
        AutoCompleteTextView cajaColor,cajaMarca; 
        //DatePicker DPfecha;
        Socket sk;
        DataInputStream entrada;
        DataOutputStream salida;
        SoundPool sp;
        int bien = 0;
        public static Activity rv;
        private GestorBaseDatos miBBDDHelper;

        public DataInputStream getEntrada() {
                return entrada;
        }

        public void setEntrada(DataInputStream entrada) {
                this.entrada = entrada;
        }

        public DataOutputStream getSalida() {
                return salida;
        }

        public void setSalida(DataOutputStream salida) {
                this.salida = salida;
        }

        private Button botonGuardar;
        private ProgressDialog progress;
        String[] items_Colores={"blanco", "negro", "amarillo", "azul", "rojo", "gris",
                        "anarangado", "verde", "violeta", "rosado", "celeste", "azul el??ctrico"};
        
        String[] items_Marca={"Toyota", "suzuki", "bmw", "kia", "chevrolet", "mazda",
                        "ford", "mercedez", "renault", "suzuki dos", "chevrolet corsa", "suzuki uno","citroen","fiat","jeep","peugeot"};

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_informacion_vehiculo);
                fuenteInfVehiculo = (TextView) findViewById(R.id.tInfVehiculo);
                Typeface tipofuenteInfVehiculo = Typeface.createFromAsset(getAssets(),
                                "RobotoCondensedRegular.ttf");
                fuenteInfVehiculo.setTypeface(tipofuenteInfVehiculo);
                Bundle datosZona = getIntent().getExtras();
                infousuario = datosZona.getString("aUsuario");
                infoNombreZona = datosZona.getString("aNumZona");
                infoIdSubCalle = datosZona.getString("aIdSubCalle");
                infoespacioRegistro = datosZona.getInt("aNumEsp");
                System.out.println("nombre usuario" +infousuario);
                System.out.println("nombre NombreZona" +infoNombreZona);
                System.out.println("nombre IdSubCalle" +infoIdSubCalle);
                System.out.println("nombre Espacio" +infoespacioRegistro);
                //Bundle datosZona2 = getIntent().getExtras();
                //infousuario = datosZona2.getString("aUsuario2");
                //infoNombreZona = datosZona2.getString("aNumZona2");
                //infoIdSubCalle = datosZona2.getString("aIdSubCalle2");
                //infoespacioRegistro = datosZona2.getInt("aNumEsp2");
                rv = this;

                /*
                 * placa = (EditText) findViewById(R.id.id_placa); color = (EditText)
                 * findViewById(R.id.id_color); fecha = (EditText)
                 * findViewById(R.id.id_hora_timePicker); marca = (EditText)
                 * findViewById(R.id.id_marca); aceptar =
                 * (Button)findViewById(R.id.btnAceptarInfVe);
                 * 
                 * aceptar.setOnClickListener(this);
                 */

                cajaPlaca = (TextView) findViewById(R.id.id_placa);
                cajaPlaca.addTextChangedListener(this);  
                cajaColor = (AutoCompleteTextView ) findViewById(R.id.id_color);
                cajaColor.addTextChangedListener(this);  
        cajaColor.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,items_Colores));
        
                cajaMarca = (AutoCompleteTextView) findViewById(R.id.id_marca);
                cajaMarca.addTextChangedListener(this);  
        cajaMarca.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,items_Marca));
        
                //TPhoraControl = (TimePicker) findViewById(R.id.id_hora_control_timePicker);
                //TPhoraControl.setIs24HourView(true);
                //TPhoraControl.setEnabled(false);
                //DPfecha = (DatePicker) findViewById(R.id.datePicker1);
                //DPfecha.setEnabled(false);

                // GestorBaseDatos crear = new
                // GestorBaseDatos(InformacionVehiculo.this);
                // crear.abrirBaseDatos();
                // ip=crear.obtenerIp();
                // String x="";
                // x=crear.obtenerpuerto();
                // puerto=Integer.parseInt(x);
                // crear.close();

                // Creamos la Base de datos
                // crearBBDD();

                // Obtenemos la instancia de los botones y preparamos los eventos que
                // lanzaran al pulsarse
                //progress = new ProgressDialog(this);
                //botonColor = (Button) findViewById(R.id.btnColor);
                //botonColor.setOnClickListener(new View.OnClickListener() {
                //      public void onClick(View view) {
                //              colorpicker();
                //      }
                //});
                botonGuardar = (Button) findViewById(R.id.btnSiguinte);
                botonGuardar.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View view) {
                                comprobarCamposInformacionVehiculo();
                                // menutiposRegistros();
                        }
                });

                Button botonCancelar = (Button) findViewById(R.id.btnCancelarInfo);
                botonCancelar.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View view) {
                                cancelar();
                        }
                });
        }

        // ////////////////////////////////////////////////////////////////////////

        private void cancelar() {
                // Cerramos la vista actual, por lo que Android mostrara la anterior,
                // sin hacer nada mas.
                Intent aZona = new Intent(InformacionVehiculo.this, ZonasControl.class);
                startActivity(aZona);

        }

        private void guardar() {
                if (comprobarGuardarValido()) {
                        // El formulario es valido, por lo tanto podemos guardar

                        boolean bienHecho = false;

                        try {

                                String placaObtenida = cajaPlaca.getText().toString().trim();
                                placa = placaObtenida.toUpperCase();
                                color = cajaColor.getText().toString().trim();
                                marca = cajaMarca.getText().toString().trim();

                                // Integer tphora = TPhoraControl.getCurrentHour();
                                // Integer tpminutos = TPhoraControl.getCurrentMinute();
                                Calendar c = Calendar.getInstance();
                                Integer tphora = c.get(Calendar.HOUR_OF_DAY);
                                // String horita = Calendar.HOUR_OF_DAY;
                                Integer tpminutos = c.get(Calendar.MINUTE);
                                horaControl = tphora + ":" + tpminutos;
                                // horaControl="13:2";

                                //Integer DPdia = DPfecha.getDayOfMonth();
                                //Integer DPmes = DPfecha.getMonth();
                                //Integer uno = 1;
                                //Integer DPano = DPfecha.getYear();
                                Date date = new Date();
                                DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
                                fechacontrol = dateFormat.format(date);

                        } catch (Exception ex) {
                                // Algo ha ido mal, capturamos la excepcion
                                bienHecho = false;
                        }

                        if (!bienHecho)
                                ;
                        // mostrarMensaje("Algo ha ido mal, no se guarda.");
                        // else
                        // finish(); // cerramos esta actividad

                } else {
                        // El formulario no es valido, no podemos guardar, mostramos un
                        // mensaje al usuario
                        mostrarMensaje("Rellena todos los campos antes de continuar");
                }
        }

        private Dialog menutiposRegistrosHorizontal() {

                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Selecione un tipo de registro.")
                                .setIcon(R.drawable.logo_design)
                                .setItems(R.array.array_TipoRegistro,
                                                new DialogInterface.OnClickListener() {
                                                        public void onClick(DialogInterface dialog, int item) {
                                                                switch (item) {
                                                                case 0:
                                                                        Intent aRegistroTarjeta = new Intent(
                                                                                        InformacionVehiculo.this,
                                                                                        RegistroTarjeta.class);
                                                                        aRegistroTarjeta.putExtra("datoUsuario",
                                                                                        infousuario);
                                                                        aRegistroTarjeta.putExtra("datoNombreZona",
                                                                                        infoNombreZona);
                                                                        aRegistroTarjeta.putExtra("datoIdSubCalle",
                                                                                        infoIdSubCalle);
                                                                        aRegistroTarjeta.putExtra(
                                                                                        "datoNumeroespacio",
                                                                                        infoespacioRegistro);
                                                                        aRegistroTarjeta.putExtra("datoplaca",
                                                                                        placa);
                                                                        aRegistroTarjeta.putExtra("datocolor",
                                                                                        color);
                                                                        aRegistroTarjeta.putExtra("datomarca",
                                                                                        marca);
                                                                        aRegistroTarjeta.putExtra(
                                                                                        "datohoraControl", horaControl);
                                                                        aRegistroTarjeta.putExtra(
                                                                                        "datofechacontrol", fechacontrol);
                                                                        startActivity(aRegistroTarjeta);

                                                                        break;
                                                                case 1:
                                                                        
                                                                        Intent aMultaTarjeta = new Intent(
                                                                                        InformacionVehiculo.this,
                                                                                        RegistroMulta.class);
                                                                        aMultaTarjeta.putExtra("datoUsuario",
                                                                                        infousuario);
                                                                        aMultaTarjeta.putExtra("datoNombreZona",
                                                                                        infoNombreZona);
                                                                        aMultaTarjeta.putExtra("datoIdSubCalle",
                                                                                        infoIdSubCalle);
                                                                        aMultaTarjeta.putExtra("datoNumeroespacio",
                                                                                        infoespacioRegistro);
                                                                        aMultaTarjeta.putExtra("datoplaca", placa);
                                                                        aMultaTarjeta.putExtra("datocolor", color);
                                                                        aMultaTarjeta.putExtra("datomarca", marca);
                                                                        aMultaTarjeta.putExtra("datohoraControl",
                                                                                        horaControl);
                                                                        aMultaTarjeta.putExtra("datofechacontrol",
                                                                                        fechacontrol);
                                                                        String controlador = "MultaControlador";
                                                                        aMultaTarjeta.putExtra("Controlador",
                                                                                        controlador);
                                                                        startActivity(aMultaTarjeta);
                                                                        break;
                                                                case 2:
                                                                        enviarRegistroExoneradosMunicipio();
                                                                        
                                                                        break;
                                                                }
                                                        }
                                                });
                // return builder.create();
                AlertDialog alert = builder.create();
                alert.show();
                return alert;
        }

        

        private void InformacionEnvioDatos() {
                AlertDialog selecRegistro = new AlertDialog.Builder(
                                InformacionVehiculo.this).create();
                selecRegistro.setTitle("Información");
                selecRegistro.setMessage("Está seguro de continuar: ");

                selecRegistro.setButton("Continuar",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;
                                        
                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                //dialogEspera();
                                                /*dialog = new ProgressDialog(InformacionVehiculo.this);
                                        dialog.setMessage("Descargando...");
                                        dialog.setTitle("Progreso");
                                        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                                        dialog.setCancelable(false);
                                        //Realizamos cualquier otra operaci??n necesaria
                                        //Creamos una nueva instancia y llamamos al m??todo ejecutar
                                        //pas??ndole el string.
                                        //new MiTarea().execute("http://www.ejemplo.com/file.zip");
                                        new MiTarea().execute();*/
                                        
                                                //try {
                                                        String valor = "";
                                                        ComunicacionTCP comunicacion = new ComunicacionTCP();
                                                        valor = comunicacion.envioInformacionVehiculo(
                                                                        infousuario, infoNombreZona,
                                                                        infoIdSubCalle, infoespacioRegistro, placa,
                                                                        color, marca, horaControl, fechacontrol);
                                                        if (valor.compareToIgnoreCase("e") == 0) {
                                                                menuConexionFallidaInformacionEnvioDatos();
                                                        }
                                                        if (valor.compareToIgnoreCase("0") == 0) {
                                                                mostrarMensaje("Codigo Correcto");
                                                                menutiposRegistrosHorizontal();
                                                        }
                                                        if (valor.compareToIgnoreCase("1") == 0) {
                                                                mostrarMensaje("Registro enviado y guardado como RECARGA");
                                                                GestorBaseDatos miBBDDHelper = new GestorBaseDatos(
                                                                                InformacionVehiculo.this);
                                                                miBBDDHelper.abrirBaseDatos();
                                                                bienHecho = miBBDDHelper
                                                                                .InsertVehiculosRecargas(infousuario,
                                                                                                infoNombreZona, infoIdSubCalle,
                                                                                                infoespacioRegistro, placa,
                                                                                                color, marca, horaControl,
                                                                                                fechacontrol, estadoEnvio);
                                                                miBBDDHelper.close();
                                                                Toast.makeText(
                                                                                getBaseContext(),
                                                                                "Los datos se han guardado satisfactoriamente",
                                                                                Toast.LENGTH_LONG).show();
                                                                Intent aZona = new Intent(
                                                                                InformacionVehiculo.this,
                                                                                ZonasControl.class);
                                                                startActivity(aZona);
                                                        }
                                                        if (valor.compareToIgnoreCase("2") == 0) {
                                                                menuNoActivacionServicioRecarga();
                                                                
                                                        }
                                                        if (valor.compareToIgnoreCase("3") == 0) {
                                                                mostrarMensaje("Registro enviado y guardado como EXONERADO");
                                                                saveExonerados();
                                                                
                                                        }
                                                        
                                                //} catch (Exception e) {
                                                        // TODO: handle exception
                                                //}

                                        }
                                });
                selecRegistro.setButton2("Revisar datos",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                        }
                                });

                selecRegistro.show();
        }
        
        public  boolean validarPlaca(String str){
                    boolean isValid = false;
                    String expresionRegularPlaca = "^([a-zA-Z]{2,3}\\d{3,4})$";
                    CharSequence inputStr = str;
                    Pattern pattern = Pattern.compile(expresionRegularPlaca);
                    Matcher matcher = pattern.matcher(inputStr);
                    if(matcher.matches()){
                        isValid = true;
                    }
                    return isValid;
         }
        
        private void menuConexionFallidaInformacionEnvioDatos() {
                AlertDialog selecRegistro = new AlertDialog.Builder(
                                InformacionVehiculo.this).create();
                selecRegistro.setTitle("Conexión Fallida");
                selecRegistro.setMessage
                ("Los Datos no fueron enviados. Desea intentar de nuevo");

                selecRegistro.setButton("Si",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                
                                                //try {
                                                        String valor = "";
                                                        ComunicacionTCP comunicacion = new ComunicacionTCP();
                                                        valor = comunicacion.envioInformacionVehiculo(
                                                                        infousuario, infoNombreZona,
                                                                        infoIdSubCalle, infoespacioRegistro, placa,
                                                                        color, marca, horaControl, fechacontrol);
                                                        if (valor.compareToIgnoreCase("e") == 0) {
                                                                menuConexionFallidaInformacionEnvioDatos();
                                                        }
                                                        if (valor.compareToIgnoreCase("0") == 0) {
                                                                mostrarMensaje("Codigo Correcto");
                                                                menutiposRegistrosHorizontal();
                                                        }
                                                        if (valor.compareToIgnoreCase("1") == 0) {
                                                                mostrarMensaje("Registro enviado y guardado como RECARGA");
                                                                GestorBaseDatos miBBDDHelper = new GestorBaseDatos(
                                                                                InformacionVehiculo.this);
                                                                miBBDDHelper.abrirBaseDatos();
                                                                bienHecho = miBBDDHelper
                                                                                .InsertVehiculosRecargas(infousuario,
                                                                                                infoNombreZona, infoIdSubCalle,
                                                                                                infoespacioRegistro, placa,
                                                                                                color, marca, horaControl,
                                                                                                fechacontrol, estadoEnvio);
                                                                miBBDDHelper.close();
                                                                Toast.makeText(
                                                                                getBaseContext(),
                                                                                "Los datos se han guardado satisfactoriamente",
                                                                                Toast.LENGTH_LONG).show();
                                                                Intent aZona = new Intent(
                                                                                InformacionVehiculo.this,
                                                                                ZonasControl.class);
                                                                startActivity(aZona);
                                                        }
                                                        if (valor.compareToIgnoreCase("2") == 0) {
                                                                menuNoActivacionServicioRecarga();
                                                        }
                                                        if (valor.compareToIgnoreCase("3") == 0) {
                                                                mostrarMensaje("Registro enviado y guardado como EXONERADO");
                                                                saveExonerados();
                                                                
                                                        }
                                                //} catch (Exception e) {
                                                        // TODO: handle exception
                                                //}

                                        }
                                });
                selecRegistro.setButton2("No",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                menuConfirmacionTipoRegistro();
                                        }
                                });

                selecRegistro.show();
        }
        private void menuConfirmacionTipoRegistro() {
                AlertDialog selecRegistro = new AlertDialog.Builder(
                                InformacionVehiculo.this).create();
                selecRegistro.setTitle("Conexión Fallida");
                selecRegistro.setMessage
                ("Los Datos no fueron enviados. Desea ver otro tipos de registro ");

                selecRegistro.setButton("Si",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                menutiposRegistrosHorizontal();
                                        }
                                });
                selecRegistro.setButton2("No",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                Intent aZona = new Intent(
                                                                InformacionVehiculo.this,
                                                                ZonasControl.class);
                                                startActivity(aZona);
                                        }
                                });

                selecRegistro.show();
        }

        private void comprobarCamposInformacionVehiculo() {
                if (comprobarGuardarValido()) {
                        guardar();
                        InformacionEnvioDatos();
                        // menutiposRegistros();
                } else {
                        // El formulario no es valido, no podemos guardar, mostramos un
                        // mensaje al usuario
                        mostrarMensaje("Rellena todos los campos antes de guardar.");
                }
        }

        /**
         * Muestra un mensaje al usuario
         * 
         * @param mensaje
         */
        private void mostrarMensaje(String mensaje) {
                Toast.makeText(this, mensaje, 5000).show();
        }

        private boolean comprobarGuardarValido() {
                Boolean guardarEsValido = false; // empezamos suponiendo que es falso

                // Obtenemos la instancia de la caja de texto
                TextView cajaPlaca = (TextView) findViewById(R.id.id_placa);
                TextView cajaColor = (TextView) findViewById(R.id.id_color);
                String valor=cajaPlaca.getText().toString().trim();
                // Comprobamos las cajas existena
                if(validarPlaca(valor)){
                                if (cajaPlaca != null && cajaColor != null) {
                                        // Comprobamos que el usuario ha escrito algo en ambas
                                        if (cajaPlaca.getText() != null
                                                        && !cajaPlaca.getText().toString().equals("")) {
                                                // Titulo tiene algo, comprobamos tambien Autor
                                                if (cajaColor.getText() != null
                                                                && !cajaColor.getText().toString().equals("")) {
                                                        guardarEsValido = true; // ha pasado las comprobaciones
                                                }
                                        }
                                }
              }else{
                  dilogPlacaNoValida();
              } 
                return guardarEsValido;
        }

        public void enviarRegistroExoneradosDiscapacitados() {
                String valor = "";
                ComunicacionTCP comunicacion = new ComunicacionTCP();
                valor = comunicacion.registroExoneradosDiscapacitados(infousuario,
                                infoNombreZona, infoIdSubCalle, infoespacioRegistro, placa,
                                color, marca, horaControl, fechacontrol);
                if (valor.compareToIgnoreCase("e") == 0) {
                        mostrarMensaje("Algo ha ido mal en la comunicación.");
                }
                if (valor.compareToIgnoreCase("0") == 0) {
                        Intent aMulta = new Intent(InformacionVehiculo.this, RegistroMulta.class);
                        aMulta.putExtra("datoMultaSistDiscapacitado",
                                        "multaTarjetaDiscapacitado");
                        // aMulta.putExtra("datoIdMultaAusenciaRecarga", 6);
                        aMulta.putExtra("datoNomControladorRecarga", infousuario);
                        aMulta.putExtra("datoNombreZonaRecarga", infoNombreZona);
                        aMulta.putExtra("datoEspacioRegistroRecarga", infoespacioRegistro);
                        aMulta.putExtra("datoIdSubCalleRecarga", infoIdSubCalle);
                        aMulta.putExtra("datoPlacaRecarga", placa);
                        aMulta.putExtra("datoColorRecarga", color);
                        aMulta.putExtra("datoMarcaRecarga", marca);
                        aMulta.putExtra("datoHoraControlRecarga", horaControl);
                        aMulta.putExtra("datoFechaControlRecarga", fechacontrol);
                        startActivity(aMulta);

                }
                if (valor.compareToIgnoreCase("1") == 0) {
                        mostrarMensaje("Código Correcto");

                }
        }

        public void enviarRegistroExoneradosMunicipio() {
                
                String valor = "";
                ComunicacionTCP comunicacion = new ComunicacionTCP();
                valor = comunicacion.registroExoneradosMunicipio(infousuario,
                                infoNombreZona, infoIdSubCalle, infoespacioRegistro, placa,
                                color, marca, horaControl, fechacontrol);
                Boolean bienHecho=false;
                GestorBaseDatos miBBDDHelper2 = new GestorBaseDatos(
                                InformacionVehiculo.this);
                miBBDDHelper2.abrirBaseDatos();
                bienHecho = miBBDDHelper2.registroExonerados(
                                infousuario, infoNombreZona,
                                infoIdSubCalle, infoespacioRegistro, placa,
                                color, marca, horaControl, fechacontrol,
                                estadoEnvio);
                miBBDDHelper2.close();
                if (valor.compareToIgnoreCase("e") == 0) {
                        mostrarMensaje("Los datos fueron guardados localmente para su posterior sicronización ");
                        saveExonerados();
                }
                if (valor.compareToIgnoreCase("0") == 0) {
                        //
                        // no multa ojo preguntar
                        //
                }
                if (valor.compareToIgnoreCase("1") == 0) {
                        mostrarMensaje("Código Correcto");
                        Intent aZona = new Intent(InformacionVehiculo.this,
                                        ZonasControl.class);
                        startActivity(aZona);
                }
        }
          public void colorpicker() {
                //     initialColor is the initially-selected color to be shown in the rectangle on the left of the arrow.
                //     for example, 0xff000000 is black, 0xff0000ff is blue. Please be aware of the initial 0xff which is the alpha.
         
                //AmbilWarnaDialog dialog = new AmbilWarnaDialog(this, 0xff0000ff, new OnAmbilWarnaListener() {
         
                    // Executes, when user click Cancel button
                  //  @Override
                  //  public void onCancel(AmbilWarnaDialog dialog){
         //           }
         
                    // Executes, when user click OK button
           //         @Override
             //       public void onOk(AmbilWarnaDialog dialog, int color) {
               //         Toast.makeText(getBaseContext(), "Selected Color : " + color, Toast.LENGTH_LONG).show();
                //        botonColor.setBackgroundColor(color);
                 //   }
                    
               // });
              //  dialog.show();
            }
        public void saveExonerados() {
                boolean bienHecho = false;

                try {
                        GestorBaseDatos miBBDDHelper = new GestorBaseDatos(
                                        InformacionVehiculo.this);
                        miBBDDHelper.abrirBaseDatos();
                        bienHecho = miBBDDHelper.registroExonerados(infousuario,
                                        infoNombreZona, infoIdSubCalle, infoespacioRegistro, placa,
                                        color, marca, horaControl, fechacontrol, estadoEnvio);
                        miBBDDHelper.close();
                        Intent aZona = new Intent(
                                        InformacionVehiculo.this,
                                        ZonasControl.class);
                        startActivity(aZona);
                        
                } catch (Exception e) {
                        bienHecho = false;
                }
                if (!bienHecho) {
                        mostrarMensaje("Algo ha ido mal. Los datos no se han guardado.");
                }
        }
        
         public void open(View v){
              progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
              progress.setIndeterminate(true);
              progress.show();

           final int totalProgressTime = 100;

           final Thread t = new Thread(){

           @Override
           public void run(){
         
              int jumpTime = 0;
              while(jumpTime < totalProgressTime){
                 try {
                    sleep(200);
                    jumpTime += 5;
                    progress.setProgress(jumpTime);
                 } catch (InterruptedException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
                 }

              }

           }
           };
           t.start();

           }

        @Override
        public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
                setNumplaca(cajaPlaca.getText().toString().trim());
                Boolean cont=true;
                if(getNumplaca().length() >=6){
                        if(validarPlaca(getNumplaca())){
                                if (cont==true) {
                                        cont=false;
                                  Toast.makeText(getApplicationContext(), "CADENA CORRECTA.", Toast.LENGTH_SHORT).show();
                                }
                      }else{
                          dilogPlacaNoValida();
                      } 
                }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
        
                
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
                // TODO Auto-generated method stub
                
        }
        private void menuNoActivacionServicioRecarga() {
                AlertDialog seleccionarTarjetaPrepago = new AlertDialog.Builder(
                                InformacionVehiculo.this).create();
                seleccionarTarjetaPrepago.setTitle("Opciones");
                seleccionarTarjetaPrepago.setMessage
                ("El usuario no ha activado el servicio de Recargas. ¿Posee Tarjeta Prepago?");
                seleccionarTarjetaPrepago.setButton( "Si",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                Intent aRegistroTarjeta = new Intent(
                                                                InformacionVehiculo.this, RegistroTarjeta.class);
                                                aRegistroTarjeta.putExtra("datoUsuario", infousuario);
                                                aRegistroTarjeta.putExtra("datoNombreZona",
                                                                infoNombreZona);
                                                aRegistroTarjeta.putExtra("datoIdSubCalle",
                                                                infoIdSubCalle);
                                                aRegistroTarjeta.putExtra("datoNumeroespacio",
                                                                infoespacioRegistro);
                                                aRegistroTarjeta.putExtra("datoplaca", placa);
                                                aRegistroTarjeta.putExtra("datocolor", color);
                                                aRegistroTarjeta.putExtra("datomarca", marca);
                                                aRegistroTarjeta.putExtra("datohoraControl",
                                                                horaControl);
                                                aRegistroTarjeta.putExtra("datofechacontrol",
                                                                fechacontrol);
                                                startActivity(aRegistroTarjeta);

                                        }
                                });
                seleccionarTarjetaPrepago.setButton2("No",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                
                                                        String valor = "";
                                                        ComunicacionTCP comunicacion = new ComunicacionTCP();
                                                        valor = comunicacion.envioInformacionVehiculoNoActivacionRecarga(
                                                                        infousuario, infoNombreZona,
                                                                        infoIdSubCalle, infoespacioRegistro, placa,
                                                                        color, marca, horaControl, fechacontrol);
                                                        if (valor.compareToIgnoreCase("e") == 0) {
                                                                menuConexionfallidaActivacionServicioRecarga(); 
                                                                
                                                        }
                                                        if (valor.compareToIgnoreCase("1") == 0) {
                                                                System.out.println("si llego trama  de respuesta con 1");
                                                                mostrarMensaje("Codigo Correcto");
                                                                GestorBaseDatos g = new GestorBaseDatos(
                                                                                InformacionVehiculo.this);
                                                                g.abrirBaseDatos();
                                                                bienHecho = g.InsertVehiculosRecargas(infousuario,
                                                                                infoNombreZona, infoIdSubCalle, infoespacioRegistro, placa, color,
                                                                                marca, horaControl, fechacontrol, estadoEnvio);
                                                                g.close();
                                                                Intent aZona = new Intent(
                                                                                InformacionVehiculo.this,
                                                                                ZonasControl.class);
                                                                startActivity(aZona);
                                                        }
                                                        
                                        }
                                });

                seleccionarTarjetaPrepago.show();
        }
        private void menuConexionfallidaActivacionServicioRecarga() {
                AlertDialog selecRegistro = new AlertDialog.Builder(
                                InformacionVehiculo.this).create();
                selecRegistro.setTitle("Conexión Fallida");
                selecRegistro.setMessage
                ("Los Datos no fueron enviados. ¿Desea intentar de nuevo?");
                selecRegistro.setButton(0, "Si",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                try {
                                                        String valor = "";
                                                        ComunicacionTCP comunicacion = new ComunicacionTCP();
                                                        valor = comunicacion.envioInformacionVehiculo(
                                                                        infousuario, infoNombreZona,
                                                                        infoIdSubCalle, infoespacioRegistro, placa,
                                                                        color, marca, horaControl, fechacontrol);
                                                        if (valor.compareToIgnoreCase("e") == 0) {
                                                                menuConexionfallidaActivacionServicioRecarga();
                                                                
                                                        }
                                                        if (valor.compareToIgnoreCase("1") == 0) {
                                                                mostrarMensaje("Datos enviado Correctamente");
                                                                miBBDDHelper.abrirBaseDatos();
                                                                bienHecho = miBBDDHelper.InsertVehiculosRecargas(infousuario,
                                                                                infoNombreZona, infoIdSubCalle, infoespacioRegistro, placa, color,
                                                                                marca, horaControl, fechacontrol, estadoEnvio);
                                                                miBBDDHelper.close();
                                                        }
                                                        
                                                } catch (Exception e) {
                                                        // TODO: handle exception
                                                }
                                                

                                        }
                                });
                selecRegistro.setButton2("No",
                                new DialogInterface.OnClickListener() {
                                        boolean bienHecho = false;

                                        @Override
                                        public void onClick(DialogInterface arg0, int arg1) {
                                                // TODO Auto-generated method stub
                                                mostrarMensaje("Los datos fueron guardados localmente para su posterior sicronización ");
                                                miBBDDHelper.abrirBaseDatos();
                                                bienHecho = miBBDDHelper.InsertVehiculosRecargas(infousuario,
                                                                infoNombreZona, infoIdSubCalle, infoespacioRegistro, placa, color,
                                                                marca, horaControl, fechacontrol, estadoEnvio);
                                                miBBDDHelper.close();
                                        }
                                });

                selecRegistro.show();
        }
        private Dialog dilogPlacaNoValida() {
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage(
                                "La placa no es correcta. Ejemplo de formato (LBN134 ó lbn1962)")
                                .setTitle("Validación placa")
                                .setIcon(R.drawable.ic_11_alerts_and_states_warning)
                                .setPositiveButton("Aceptar",
                                                new DialogInterface.OnClickListener() {
                                                        public void onClick(DialogInterface dialog, int id) {
                                                                dialog.cancel();
                                                        }
                                                });
                // return builder.create();
                AlertDialog alert = builder.create();
                alert.show();
                return alert;
        }
        public void dialogEspera() {
                dialogCircle = new ProgressDialog(InformacionVehiculo.this);
                dialogCircle.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                dialogCircle.setMessage("Procesando...");
                dialogCircle.setCancelable(true);
                dialogCircle.setMax(100);
                dialogCircle.show();
                // tarea2 = new MiTareaAsincronaDialog();
                // tarea2.execute();
                // dialogCircle = ProgressDialog.show(this, "", "Espere por Favor...",
                // true);

                // dialogCircle.setProgressStyle(ProgressDialog.STYLE_SPINNER);

                // ProgressThread thead = new ProgressThread();
                // thead.start();

        }
   /* private class MiTarea extends AsyncTask<String, Float, Integer>{
         
        protected void onPreExecute() {
            dialog.setProgress(0);
            dialog.setMax(100);
                dialog.show(); //Mostramos el di??logo antes de comenzar
         }

         protected Integer doInBackground(String... urls) {
            /**
             * Simularemos que descargamos un fichero
             * mediante un sleep
             */
/*
             for (int i = 0; i < 250; i++) {
                   //Simulamos cierto retraso
                   try {Thread.sleep(200); }
                   catch (InterruptedException e) {}

                   publishProgress(i/250f); //Actualizamos los valores
               }

             return 250;
         }

         protected void onProgressUpdate (Float... valores) {
             int p = Math.round(100*valores[0]);
             dialog.setProgress(p);
         }

         protected void onPostExecute(Integer bytes) {
             dialog.dismiss();
         }
   }*/

}
